int getMaximumGenerated(int n) {
    if (n == 0) {
        return 0;
    }
    int nums[n + 1];
    nums[1] = 1;
    int ret = 1;
    for (int i = 2; i <= n; ++i) {
        nums[i] = nums[i / 2] + i % 2 * nums[i / 2 + 1];
        ret = fmax(ret, nums[i]);
    }
    return ret;
}
